Custom Connection Manager এবং Retry Mechanism

Java Technologies - অ্যাপাচি এইচটিটিপি ক্লায়েন্ট (Apache HTTP Client) Custom HTTP Clients তৈরি |
181
181

অ্যাপাচি HTTP ক্লায়েন্ট (Apache HTTP Client)Custom Connection Manager এবং Retry Mechanism ব্যবহারের মাধ্যমে আপনি HTTP কানেকশন ব্যবস্থাপনা কাস্টমাইজ করতে পারেন এবং রিট্রাই অপশন সংযুক্ত করতে পারেন। এই দুটি ফিচার আপনাকে HTTP ক্লায়েন্টের পারফরম্যান্স এবং স্থিতিশীলতা উন্নত করতে সহায়ক।

1. Custom Connection Manager

Custom Connection Manager ব্যবহার করে আপনি HTTP কানেকশনগুলি আরও বেশি কাস্টমাইজ এবং নিয়ন্ত্রণ করতে পারেন। অ্যাপাচি HTTP ক্লায়েন্টে, আপনি কাস্টম কানেকশন ম্যানেজার তৈরি করে বিভিন্ন সার্ভারের সাথে কানেকশন পুল ম্যানেজ করতে পারবেন। এটি কার্যকর হতে পারে যখন আপনি একাধিক সার্ভারের সাথে কানেকশন তৈরি করতে চান বা নির্দিষ্ট সার্ভারের জন্য আলাদা প্যারামিটার ব্যবহার করতে চান।

Custom Connection Manager তৈরি করা:

import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.pool.PoolStats;
import org.apache.hc.client5.http.impl.pool.BasicHttpClientConnectionManager;
import org.apache.hc.core5.pool.PoolEntry;

public class CustomConnectionManagerExample {
    public static void main(String[] args) throws Exception {
        // Custom connection manager তৈরি করা
        BasicHttpClientConnectionManager connectionManager = new BasicHttpClientConnectionManager();

        // Connection pool-এর পরিসংখ্যান দেখতে পারেন
        PoolStats poolStats = connectionManager.getTotalStats();
        System.out.println("Total connections: " + poolStats.getAvailable() + " available connections");

        // HTTP ক্লায়েন্ট তৈরি করা
        try (CloseableHttpClient httpClient = HttpClients.custom()
                .setConnectionManager(connectionManager) // Custom connection manager সেট করা
                .build()) {

            // GET অনুরোধ তৈরি করা
            HttpGet request = new HttpGet("https://example.com");

            // HTTP অনুরোধ পাঠানো
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println("HTTP Response Status Code: " + response.getCode());
            }
        }
    }
}

ব্যাখ্যা:

  • BasicHttpClientConnectionManager: এটি একটি কানেকশন ম্যানেজার যা HTTP কানেকশন পুল ম্যানেজমেন্ট করে।
  • PoolStats: এই ক্লাসটি পুলে থাকা সক্রিয় এবং উপলব্ধ কানেকশনগুলির পরিসংখ্যান প্রদান করে।

2. Retry Mechanism

Retry Mechanism অ্যাপাচি HTTP ক্লায়েন্টে খুবই গুরুত্বপূর্ণ, বিশেষত যখন সার্ভারটি অস্থির থাকে অথবা সংযোগ সময়সীমা অতিবাহিত হয়ে যায়। আপনি কাস্টম রিট্রাই লজিক যোগ করতে পারেন, যেমন অনুরোধের ব্যর্থতার পর কিছু নির্দিষ্ট সংখ্যক রিটার্ন চেষ্টা করা।

Retry Mechanism উদাহরণ:

import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.classic.DefaultHttpRequestRetryHandler;
import org.apache.hc.client5.http.impl.classic.HttpRequestRetryHandler;
import org.apache.hc.core5.http.ParseException;
import java.io.IOException;

public class RetryMechanismExample {
    public static void main(String[] args) throws Exception {
        // Custom Retry Handler তৈরি করা (3 বার retry করবে)
        HttpRequestRetryHandler retryHandler = new DefaultHttpRequestRetryHandler(3, true);

        // HTTP ক্লায়েন্ট তৈরি করা, যাতে retry mechanism সেট করা হয়
        try (CloseableHttpClient httpClient = HttpClients.custom()
                .setRetryHandler(retryHandler)  // Retry handler যোগ করা
                .build()) {

            // GET অনুরোধ তৈরি করা
            HttpGet request = new HttpGet("https://example.com");

            // HTTP অনুরোধ পাঠানো এবং পুনঃচেষ্টা করা
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println("HTTP Response Status Code: " + response.getCode());
            }
        }
    }
}

ব্যাখ্যা:

  • DefaultHttpRequestRetryHandler: এটি একটি পূর্বনির্ধারিত রিট্রাই মেকানিজম, যা HTTP অনুরোধ ব্যর্থ হলে কিছু নির্দিষ্ট সংখ্যক রিটার্ন চেষ্টা করে। উপরের উদাহরণে, এটি ৩ বার চেষ্টা করবে।
  • setRetryHandler(retryHandler): এটি ক্লায়েন্টে রিট্রাই মেকানিজম সেট করার জন্য ব্যবহৃত হয়।
  • রিটার্ন চেষ্টা করার জন্য প্যারামিটারগুলির মধ্যে অন্তর্ভুক্ত থাকে - retry count এবং নির্দিষ্ট HTTP স্ট্যাটাস কোডগুলি (যেমন, 500 Internal Server Error বা 503 Service Unavailable)।

3. Custom Retry Logic

আপনি যদি একটি কাস্টম রিট্রাই লজিক তৈরি করতে চান, তবে আপনি নিজস্ব HttpRequestRetryHandler ইমপ্লিমেন্ট করতে পারেন, যা নির্দিষ্ট শর্তের উপর ভিত্তি করে রিটার্ন চেষ্টা করবে।

Custom Retry Handler উদাহরণ:

import org.apache.hc.client5.http.impl.classic.HttpClients;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
import org.apache.hc.client5.http.impl.classic.HttpGet;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
import org.apache.hc.client5.http.impl.classic.HttpRequestRetryHandler;
import org.apache.hc.core5.http.ParseException;
import java.io.IOException;
import org.apache.hc.client5.http.impl.classic.DefaultHttpRequestRetryHandler;

public class CustomRetryHandlerExample {
    public static void main(String[] args) throws Exception {
        // Custom retry handler ইমপ্লিমেন্ট করা
        HttpRequestRetryHandler customRetryHandler = (exception, executionCount, context) -> {
            if (executionCount > 3) {  // ৩বারের বেশি retry না করবে
                return false;
            }
            if (exception instanceof IOException) {  // শুধু IOException এ retry হবে
                return true;
            }
            return false;
        };

        // HTTP ক্লায়েন্ট তৈরি করা, যাতে custom retry handler সেট করা হয়
        try (CloseableHttpClient httpClient = HttpClients.custom()
                .setRetryHandler(customRetryHandler)  // Custom retry handler যোগ করা
                .build()) {

            // GET অনুরোধ তৈরি করা
            HttpGet request = new HttpGet("https://example.com");

            // HTTP অনুরোধ পাঠানো এবং পুনঃচেষ্টা করা
            try (CloseableHttpResponse response = httpClient.execute(request)) {
                System.out.println("HTTP Response Status Code: " + response.getCode());
            }
        }
    }
}

ব্যাখ্যা:

  • এখানে, কাস্টম রিট্রাই হ্যান্ডলার তৈরি করা হয়েছে যা শুধুমাত্র IOException এর জন্য রিট্রাই করবে এবং সর্বোচ্চ ৩ বার রিট্রাই করবে।
  • executionCount > 3: এটা চেক করে যে, ৩ বার রিট্রাই করার পর আরও রিটার্ন চেষ্টা না করা হয়।

সারাংশ

  • Custom Connection Manager: এটি HTTP কানেকশন পুলের কার্যক্রম নিয়ন্ত্রণ করতে ব্যবহৃত হয়, এবং এটি কাস্টম কানেকশন পুলিং কৌশলগুলি অ্যাপ্লাই করতে সাহায্য করে।
  • Retry Mechanism: এটি HTTP অনুরোধের ব্যর্থতার পর পুনরায় চেষ্টা করার জন্য ব্যবহৃত হয়। আপনি DefaultHttpRequestRetryHandler ব্যবহার করতে পারেন অথবা কাস্টম HttpRequestRetryHandler তৈরি করতে পারেন।

এই দুটি ফিচার আপনাকে ক্লায়েন্টের পারফরম্যান্স এবং স্থিতিশীলতা উন্নত করতে সাহায্য করতে পারে, বিশেষত যখন সার্ভার অস্থির থাকে অথবা সংযোগের সমস্যা হয়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion